#pragma once

#pragma unmanaged

#include <BWSAL\BorderManager.h>

#pragma managed

#include "..\AiBase.h"
#include "Interfaces\IBorderManager.h"
#include "Interfaces\IInformationManager.h"

namespace BroodWar
{
	namespace Addon
	{
		public ref class BorderManager : public AiBase, IBorderManager
		{
		internal:
			BWSAL::BorderManager* instance;

			BorderManager(BWSAL::BorderManager* manager);
			~BorderManager();
			!BorderManager();

			static BorderManager^ s_instance;
		public:
			static void Create(IInformationManager^ informationManager);
			static property BorderManager^ Instance { BorderManager^ get(); }
			
			virtual void OnFrame() override;
			virtual void AddMyBase(BaseLocation^ location);
			virtual void RemoveMyBase(BaseLocation^ location);
			virtual property HashSet<Chokepoint^>^ MyBorder { HashSet<Chokepoint^>^ get(); }
			virtual property HashSet<Chokepoint^>^ EnemyBorder { HashSet<Chokepoint^>^ get(); }
			virtual property HashSet<Chokepoint^>^ MyRegions { HashSet<Chokepoint^>^ get(); }
			virtual property HashSet<Chokepoint^>^ EnemyRegions { HashSet<Chokepoint^>^ get(); }
			virtual void Draw();
		};
	}
}
